package com.rabbit.eap.system.service;

import com.rabbit.eap.framework.common.api.ApiResult;
import com.rabbit.eap.framework.common.service.BaseService;
import com.rabbit.eap.framework.shiro.vo.LoginSysUserVO;
import com.rabbit.eap.system.dto.IdDTO;
import com.rabbit.eap.system.dto.ModifyPwdDTO;
import com.rabbit.eap.system.dto.SysUserDTO;
import com.rabbit.eap.system.entity.SysMenu;
import com.rabbit.eap.system.entity.SysUser;
import com.rabbit.eap.system.param.SysUserPageParam;

import java.util.List;

/**
 * @projectName: eap
 * @packageName: com.rabbit.eap.system.service
 * @className: ISysUserService
 * @author： rabbit
 * @version： 1.0
 * @since： 2020/06/06 23:34:03
 * <p>Description:
 * 用户信息表 服务类
 * </p>

 */
public interface ISysUserService extends BaseService<SysUser> {


    /**
     * @Description: 添加用户信息表
     * @methodName: saveSysUser
     * @param sysUserDTO:sysUserDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult saveSysUser(SysUserDTO sysUserDTO) throws Exception;


    /**
     * @Description: 修改用户信息表
     * @methodName: modifySysUser
     * @param  sysUserDTO:sysUserDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult modifySysUser(SysUserDTO sysUserDTO) throws Exception;

    /**
     * @Description: 删除用户信息表
     * @methodName: removeSysUser
     * @param ids:ids集合
     * @return: ApiResult.result(flag)
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult removeSysUser(Long[] ids) throws Exception;

    /**
     * @Description: 根据Id获取用户信息表详情
     * @methodName: getSysUserInfo
     * @param id: id
     * @return:  SysUserVO
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult getSysUserById(Long id) throws Exception;

    /**
     * @Description: 用户信息表分页列表
     * @methodName: getSysUserPageList
     * @param sysUserPageParam
     * @return: Paging<SysUserVO>
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult getSysUserPageList(SysUserPageParam sysUserPageParam) throws Exception;

    ApiResult resetPwd(IdDTO idDTO);

    ApiResult modifyPwd(ModifyPwdDTO modifyPwdDTO);

    ApiResult changeUserStatus(SysUserDTO sysUserDTO);

    ApiResult<LoginSysUserVO> getInfo();

    ApiResult<List<SysMenu>> getUserMenu();
}
